/*
 * @(#)XfspGeneralizedDunnIndex63.java        2004/08/01
 *
 * This file is part of Xfuzzy 3.1, a design environment for fuzzy logic
 * based systems.
 *
 * (c) 2000 IMSE-CNM. The authors may be contacted by the email address:
 *                    xfuzzy-team@imse.cnm.es
 *
 * Xfuzzy is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by
 * the Free Software Foundation.
 *
 * Xfuzzy is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * for more details.
 */

package xfuzzy.xfsp.model.types;

/**
 * <p> <b>Descripci�n:</b> clase de los m�todos de validaci�n de clusters
 * mediante el �ndice de Dunn generalizado 63.
 * <p> <b>E-mail</b>: <ADDRESS>joragupra@us.es</ADDRRESS>
 * @author Jorge Agudo Praena
 * @version 1.2
 * @see IXfspTypeSimplifier
 * @see IXfspValidityMeasure
 * @see XfspDunnValidityMeasure
 * @see XfspGeneralizedDunnIndex
 * @see XfspTypeSimplifierFactory
 *
 */
public class XfspGeneralizedDunnIndex63
    extends XfspGeneralizedDunnIndex {

  /**
   * <p> <b>Descripci�n:</b> crea un medidor del �ndice de valoraci�n de
   * clusters seg�n el m�todo de generalizado de Dunn 63.
   * @param data Conjunto de datos que se quieren agrupar en clusters y del que
   * se va a calcular el n�mero �ptimo de ellos.
   * @param weights Pesos asignados a cada uno de los elementos que compone un
   * data de los que se van a estudiar (como hayan sido definidos previamente).
   *
   */
  public XfspGeneralizedDunnIndex63(double[][] data, double[] weights) {
    //llama al constructor del padre con los mismo par�metros
    super(data, weights);
  }

  /**
   * <p> <b>Descripci�n:</b> devuelve el valor del numerador para el m�todo de
   * validaci�n Dunn 63.
   * @param data Conjunto de datos agrupables en <i>clusters</i>.
   * @param assign Asignaci�n hecha de los datos a los distintos
   * <i>clusters</i>.
   * @param weights Pesos asignados a los par�metros de las funciones de
   * pertenencia.
   * @param c1 N�mero del primer <i>cluster</i>.
   * @param c2 N�mero del segundo <i>cluster</i>.
   * @return Valoraci�n del numerador del m�todo de validaci�n de Dunn 63.
   *
   */
  protected double getNumerator(double[][] data, int[] assign, double[] weights,
                                int c1, int c2) {
    IXfspDistance d = new XfspEuclideanDistance(weights);
    return d.haussdorffDistance(data, assign, c1, c2);
  }
}
